#include <stdio.h>
#include <stdio.h>
// 升序
int ascendingOrder(int a, int b)
{
    if (a > b)
        return 1;
    else
        return 0;
}
// 降序
int descendingOrder(int a, int b)
{
    if (a < b)
        return 1;
    else
        return 0;
}
void bubble(int *array, int len, int (*order)(int, int))
{
    for (int j = 0; j < len - 1; j++)
    {
        for (int i = 0; i < len - j - 1; i++)
        {
            if (order(array[i], array[i + 1]))
            { // array[i]>array[i+1]
                array[i] = array[i] + array[i + 1];
                array[i + 1] = array[i] - array[i + 1];
                array[i] = array[i] - array[i + 1];
            }
        }
    }
}
int main()
{
    int array[5] = {10, 3, 66, 2, 45};
    int len = sizeof(array) / sizeof(array[0]);

    bubble(array, len, ascendingOrder);

    for (int i = 0; i < len; i++)
        printf("%d ", array[i]);
    printf("\n");
    return 0;
}
// 升序
int ascendingOrder(int a, int b)
{
    if (a > b)
        return 1;
    else
        return 0;
}
// 降序
int descendingOrder(int a, int b)
{
    if (a < b)
        return 1;
    else
        return 0;
}
void bubble(int *array, int len, int (*order)(int, int))
{
    for (int j = 0; j < len - 1; j++)
    {
        for (int i = 0; i < len - j - 1; i++)
        {
            if (order(array[i], array[i + 1]))
            { // array[i]>array[i+1]
                array[i] = array[i] + array[i + 1];
                array[i + 1] = array[i] - array[i + 1];
                array[i] = array[i] - array[i + 1];
            }
        }
    }
}
int main()
{
    int array[5] = {10, 3, 66, 2, 45};
    int len = sizeof(array) / sizeof(array[0]);

    bubble(array, len, ascendingOrder);

    for (int i = 0; i < len; i++)
        printf("%d ", array[i]);
    printf("\n");
    return 0;
}